home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / simula / compiler / cim / sun4cim.lha / libcim.a / simset.sim < prev    next >
Text File  |  1993-01-19  |  2KB  |  107 lines

  1. % $Id: simset.sim,v 1.1 1992/08/23 19:09:21 cim Exp $
  2. %ifdef included
  3. %else
  4. %timestamp simset
  5. %endif
  6. %nonetest off
  7. %cacesensitive on
  8. CLASS SIMSET;
  9. BEGIN
  10.  
  11.   CLASS LINKAGE;
  12.   BEGIN REF(LINKAGE)zzsuc,zzpred;
  13.   
  14.     REF(LINK) PROCEDURE SUC;
  15.       SUC:- IF zzsuc IN LINK THEN zzsuc ELSE NONE;
  16.     
  17.     REF(LINK) PROCEDURE PRED;
  18.       PRED:- IF zzpred IN LINK THEN zzpred ELSE NONE;
  19.     
  20.     REF(LINKAGE) PROCEDURE PREV; PREV:-zzpred;
  21.   
  22.   END LINKAGE;
  23.   
  24.  
  25.   LINKAGE CLASS LINK;
  26.   BEGIN
  27.   
  28.     PROCEDURE OUT;
  29.     IF zzsuc=/=NONE THEN BEGIN
  30.       zzsuc.zzpred:-zzpred;
  31.       zzpred.zzsuc:-zzsuc;
  32.       zzsuc:-zzpred:-NONE;
  33.     END OUT;
  34.     
  35.     PROCEDURE FOLLOW(PTR); REF(LINKAGE)PTR;
  36.     BEGIN OUT;
  37.       IF PTR=/=NONE AND THEN PTR.zzsuc=/=NONE THEN BEGIN
  38.         zzpred:-PTR;
  39.         zzsuc:-PTR.zzsuc;
  40.         zzsuc.zzpred:-PTR.zzsuc:-THIS LINKAGE END
  41.     END FOLLOW;
  42.     
  43.     PROCEDURE PRECEDE(PTR); REF(LINKAGE)PTR;
  44.     BEGIN OUT;
  45.       IF PTR=/=NONE AND THEN PTR.zzpred=/=NONE THEN BEGIN
  46.         zzsuc:-PTR;
  47.         zzpred:-PTR.zzpred;
  48.         zzpred.zzsuc:-PTR.zzpred:-THIS LINKAGE END
  49.     END PRECEDE;
  50.     
  51.     PROCEDURE INTO(S); REF(HEAD)S; PRECEDE(S);
  52.   
  53.   END LINK;
  54.   
  55.  
  56.   LINKAGE CLASS HEAD;
  57.   BEGIN
  58.   
  59.     REF(LINK) PROCEDURE FIRST;
  60.       !FIRST:-SUC;
  61.       FIRST:- IF zzsuc IN LINK THEN zzsuc ELSE NONE;  
  62.  
  63.     REF(LINK) PROCEDURE LAST; 
  64.       !LAST:-PRED;
  65.       LAST:- IF zzpred IN LINK THEN zzpred ELSE NONE;
  66.     
  67.     BOOLEAN PROCEDURE EMPTY; EMPTY:= zzsuc==THIS LINKAGE;
  68.   
  69.     INTEGER PROCEDURE CARDINAL;
  70.     BEGIN INTEGER I;
  71.       REF(LINKAGE) PTR;
  72. %      PTR:-FIRST;
  73. %      WHILE PTR =/= NONE DO BEGIN
  74. %        I:=I+1;
  75. %        PTR:-PTR.SUC;
  76. %      END WHILE;
  77.       PTR:-zzsuc;
  78.       WHILE PTR =/= THIS LINKAGE DO BEGIN
  79.         I:=I+1;
  80.         PTR:-PTR.zzsuc;
  81.       END WHILE;
  82.  
  83.       CARDINAL:=I
  84.     END CARDINAL;
  85.     
  86. %    PROCEDURE CLEAR; WHILE FIRST=/= NONE DO FIRST.OUT;
  87.     PROCEDURE CLEAR; 
  88.     BEGIN
  89.       REF(LINKAGE) PTR,PTRSUC;
  90.       PTR:-zzsuc;
  91.       WHILE PTR =/= THIS LINKAGE DO 
  92.       BEGIN
  93.         PTRSUC:-PTR.zzsuc;
  94.         PTR.zzsuc:-PTR.zzpred:-NONE;
  95.         PTR:-PTRSUC;
  96.       END;
  97.       zzsuc:-zzpred:-THIS LINKAGE
  98.     END;
  99.     
  100.     zzsuc:-zzpred:-THIS LINKAGE
  101.   END HEAD;
  102.  
  103. END SIMSET;
  104.  
  105. %CACESENSITIVE OFF
  106. %eof
  107.